/**
 * 功能： js版本事件总线（类似 android EventBus）
 * 
 * 作者： caihan
 * 日期:  2021-05-19
 */
import EventBus from '@/common/bus/event-bus.js'
const bus = new EventBus()
export default {

	/**
	 * 注册一个事件(同一类型只能注册一次，即同一函数名称名称，只能注册一次)
	 * @param {Object} observer 需要观察的对象 this
	 * @param {Object} eventName 观察的对象事件类型，可确省,默认为 "defaultType"
	 * @param {Object} subscriber 订阅回调
	 */
	on(observer, eventName, subscriber) {
		bus.register(observer, eventName, false, subscriber);
	},
	/**
	 * 注册一个粘性事件(同一类型只能注册一次，即同一函数名称名称，只能注册一次)
	 * @param {Object} observer 需要观察的对象 this
	 * @param {Object} eventName 观察的对象事件类型，可确省,默认为 "defaultType"
	 * @param {Object} subscriber 订阅回调
	 */
	onSticky(observer, eventName, subscriber) {
		bus.register(observer, eventName, true, subscriber);
	},
	/**
	 * 移除页面所有监听事件
	 * @param {Object} observer 需要观察的对象 this
	 */
	off(observer) {
		bus.unRegister(observer);
	},
	/**
	 * 发送事件消息
	 * @param {Object} eventName 事件类型
	 * @param {Object} msg 消息
	 */
	emit(eventName, msg) {
		bus.post(eventName, msg);
	},
	/**
	 * 发送粘性事件（消息，同一个类型，只保留最后一个）
	 * @param {Object} eventName 事件类型
	 * @param {Object} msg 消息
	 */
	emitSticky(eventName, msg) {
		bus.postSticky(eventName, msg);
	},
}
